#ifndef winInput_h__
#define winInput_h__

#include "../../inc/skyAdapter.h"
#ifdef _WIN_
#include <windows.h>
#include "../../inc/skyObject.h"
namespace	Sky
{
	class OSInput : public Object
	{
	public:
		typedef enum _Event
		{
			KeyUp,
			KeyDown,
			KeyRepeat,
			MouseUp,
			MouseDown,
			MouseMove
		}Event;
		typedef enum _XMOUSE_
		{
			LeftDown,
			LeftUp,
			RightDown,
			RightUp
		}MOUSE;
		typedef enum _XKEY_
		{
			XKEY_NONE,
			XKEY_UP,
			XKEY_DOWN,
			XKEY_LEFT,
			XKEY_RIGHT,
			XKEY_OK,
			XKEY_FUN_LEFT,
			XKEY_FUN_RIGHT,
			XKEY_0,
			XKEY_1,
			XKEY_2,
			XKEY_3,
			XKEY_4,
			XKEY_5,
			XKEY_6,
			XKEY_7,
			XKEY_8,
			XKEY_9,
			XKEY_A,
			XKEY_B,
			XKEY_C,
			XKEY_D,
			XKEY_E,
			XKEY_F,
			XKEY_G,
			XKEY_H,
			XKEY_I,
			XKEY_J,
			XKEY_K,
			XKEY_L,
			XKEY_M,
			XKEY_N,
			XKEY_O,
			XKEY_P,
			XKEY_Q,
			XKEY_R,
			XKEY_S,
			XKEY_T,
			XKEY_U,
			XKEY_V,
			XKEY_W,
			XKEY_X,
			XKEY_Y,
			XKEY_Z,
			XKEY_ENTER
		}XKEY;
		XKEY KeyMap[0x100];
		i32 _x;
		i32 _y;
		Event _type;
		XKEY _key;
		MOUSE _mouse;
	public:
		Event getEvent(){return _type;}
		Point getPoint(){return Point(_x,_y);}
		XKEY  getKey(){return _key;}
		MOUSE getMouse(){return _mouse;}
		OSInput();
		Bool convertInput(UINT uMsg, WPARAM wParam, LPARAM lParam);
		Point getMousePoint(){return Point(_x,_y);}
	};
}
#endif // winInput_h__
#endif
